if (priv->modal && widget &&
gtk_widget_is_drawable (GTK_WIDGET (popover)) &&
!gtk_widget_is_ancestor (widget, GTK_WIDGET (popover)))
- gtk_widget_hide (GTK_WIDGET (popover));
+ {
+ GtkWidget *grab_widget;
+
+ grab_widget = gtk_grab_get_current ();
+
+ if (!grab_widget || !GTK_IS_POPOVER (grab_widget))
+ gtk_widget_hide (GTK_WIDGET (popover));
+ }
}
static void
if (priv->modal &&
gtk_widget_is_visible (GTK_WIDGET (popover)) &&
!gtk_widget_has_grab (GTK_WIDGET (popover)))
- gtk_widget_hide (GTK_WIDGET (popover));
+ {
+ GtkWidget *grab_widget;
+
+ grab_widget = gtk_grab_get_current ();
+
+ if (!grab_widget || !GTK_IS_POPOVER (grab_widget))
+ gtk_widget_hide (GTK_WIDGET (popover));
+ }
}
static void